home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Forever 4
/
Atari Forever 4.zip
/
Atari Forever 4.iso
/
PD_THEMA
/
EDITOREN
/
7UP_PD
/
VAPROTO.H1
< prev
next >
Wrap
Text File
|
1998-03-14
|
10KB
|
263 lines
/*
* vaproto.h
*
* project: venus
*
* author: stefan eissing
*
* description: Definition der Nachrichten des Venus <-> Accessory
* Protokolls
*
* last change: 16.4.1991
*/
#ifndef __vaproto__
#define __vaproto__
#define AP_TERM 50
/* Message-Nummern für das xAcc-Protokoll von Konrad Hinsen
* Venus gibt bei ACC_ID "VENUS.APP" und Gemini gibt "GEMINI.APP"
* zurück. Gemini unterstützt xAcc der Stufe 0.
*/
#define ACC_ID 0x400
#define ACC_OPEN 0x401
#define ACC_CLOSE 0x402
#define ACC_ACC 0x403
/* Message-Nummern für die Kommunikation zwischen Venus und
* verschiedenen Accesories.
* Sollten in Nachrichten Pfade oder Dateinamen vorkommen, so
* muß immer der absolute Pfad angegeben werden (also mit Laufwerk)
* und alle Buchstaben müssen Großbuchstaben sein. Pfade enden
* IMMER mit einem Backslash!
*
* Nachrichten von Venus beginnen mit VA (Venus -> Accessory).
* Nachrichten an Venus beginnen mit AV (Accessory -> Venus).
*
* Mit AV_PROTOKOLL kann jedes Acc nachfragen, welche Nachrichten
* verstanden werden (Dies ist ja bei VENUS und GEMINI
* unterschiedlich! Es wäre schön, wenn auch andere Programme auf
* dieses Protokoll reagieren würden. Zumindest AV_SENDKEY ist
* sicher leicht zu implementieren und ist die einzige Methode, wie
* über Nachrichten Tastaturdrücke simuliert werden können.
*/
/* AV_PROTOKOLL: Mit dieser Nachrichtennummer sollte man bei
* anderen Applikationen und auch VENUS/GEMINI nachfragen, ob
* und welche Nachrichten sie versteht.
*/
#define AV_PROTOKOLL 0x4700
/*
* Word 6+7: Pointer auf den Accessorynamen, wie er bei
* appl_find benutzt werden muß; also 8 Zeichen lang
* nullterminiert (char name[9]).
* Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
* Word 3:
* Bit 0: (VA_SETSTATUS)
* Bit 1: (VA_START)
* Alle anderen Bits sind für Erweiterungen reserviert und sollten
* daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
* Bits in den Worten 4 und 5.
*/
/* VA_PROTOSTATUS: Dem Sender von AV_PROTOKOLL wird mitgeteilt, daß
* der Empfänger etwas von diesem Protokoll weiß. Die Worte 3-7 des
* Nachrichtenpuffers enthalten die Information, welche Nachrichten
* verstanden werden. Gesetzte Bits stehen dafür, daß eine Nachricht
* (Nachrichtengruppe) verstanden werden.
*/
#define VA_PROTOSTATUS 0x4701
/*
* Word 6+7: Pointer auf den Programmnamen, wie er bei
* appl_find benutzt werden muß; also 8 Zeichen lang
* nullterminiert (char name[9]).
* Die Bits in den Worten 3, 4 und 5 haben folgende Bedeutung:
* Word 3:
* Bit 0 (AV_SENDKEY)
* Bit 1 (AV_ASKFILEFONT)
* Bit 2 (AV_ASKCONFONT, AV_OPENCONSOLE)
* Bit 3 (AV_ASKOBJECT)
* Bit 4 (AV_OPENWIND)
* Bit 5 (AV_STARTPROG)
* Bit 6 (AV_ACCWINDOPEN, AV_ACCWINDCLOSED)
* Bit 7 (AV_STATUS, AV_GETSTATUS)
* Bit 8 (AV_COPY_DRAGGED)
* Alle anderen Bits sind für Erweiterungen reserviert und sollten
* daher mit 0 vorbesetzt werden. Das gilt natürlich auch für die
* Bits in den Worten 4 und 5.
*
* AV_SENDKEY kann sicher jeder leicht in seine Programme einbauen.
* Bei AV_OPENWIND könnte ein Hauptprogramm auch seine "normale"
* Routine zum Öffnen eines Dokumentes anwerfen und dabei den
* übergebenen Pfad benutzen. Dies ist zusammen mit der Benutzung
* von TreeView sicher eine einfache Art, Dateien aus anderen Ordnern
* oder Laufwerken zu laden.
*/
/* AV_GETSTATUS: Ein Accessory erfragt bei Venus den aktuellen
* Status, den es Venus mit AV_STATUS mal gegeben hat.
*/
#define AV_GETSTATUS 0x4703
/* AV_STATUS: Ein Accessory kann Venus seinen Status mitteilen,
* der dann von Venus im INF-File gespeichert wird und mit
* AV_GETSTATUS wieder abgerufen werden kann.
* Zuvor MUSS es sich aber mit AV_PROTOKOLL anmelden!
* Word 3+4: Pointer auf einen String, der keine Steuerzeichen
* enthalten darf und nicht länger als 256 Zeichen
* sein darf. Dieser Pointer darf allerdings NULL sein.
*/
#define AV_STATUS 0x4704
/* VA_SETSTATUS: Venus teilt dem Accessory den abgespeicherten
* Status bei Nachfrage durch AV_GETSTATUS mit. Dieser kann dann
* von einem Accessory gesetzt werden.
* Word 3+4: Pointer auf einen String, der keine Steuerzeichen
* enthält.
* Dieser Pointer kann allerdings NULL sein, dann war
* kein Status gespeichert.
*/
#define VA_SETSTATUS 0x4705
/* AV_SENDKEY: Ein Acc sendet VENUS/GEMINI einen Tastaturevent, den
* es selber vielleicht nicht versteht.
* Word 3 = Tastaturstatus ev_mmokstate
* Word 4 = Scancode der gedrückten Taste ev_mkreturn
*/
#define AV_SENDKEY 0x4710
/* VA_START: Accessory wird aktiviert. Word 3 + 4 enthalten einen
* Pointer auf eine Kommandozeile, der auch NULL sein kann.
* In der Kommandozeile stehen Pfade oder Dateinamen.
*/
#define VA_START 0x4711
/* AV_ASKFILEFONT: Frage nach dem eingestellten Zeichensatz
* für Dateinamen.
*/
#define AV_ASKFILEFONT 0x4712
/* VA_FILEFONT: Gibt den derzeit eingestellten Zeichensatz.
* Word 3 = Dateifontnummer (font id)
* Word 4 = Dateifontgröße (in points)
*/
#define VA_FILEFONT 0x4713
/* (Nur Gemini) AV_ASKCONFONT: Frage nach dem eingestellten
* Zeichensatz für das Console-Fenster.
*/
#define AV_ASKCONFONT 0x4714
/* VA_CONFONT: Gibt den derzeit eingestellten Zeichensatz.
* Word 3 = Consolefontnummer (font id)
* Word 4 = Consolefontgröße (in points)
*/
#define VA_CONFONT 0x4715
/* AV_ASKOBJECT: Fragt nach dem derzeit selektiertem Objekt.
* Es wird der Name des derzeit selektierten Objektes zurückgegeben.
* Ist kein Objekt selektiert, so ist der String leer.
* Sind mehrere Objekte selektiert, so sind ihre Namen durch Leer-
* zeichen getrennt.
*/
#define AV_ASKOBJECT 0x4716
/* VA_OBJECT: Gibt Namen der derzeit selektierten Objekte.
* Aufbau wie bei VA_START
*/
#define VA_OBJECT 0x4717
/* (Nur Gemini)AV_OPENCONSOLE: Venus soll das Console-Fenster öffnen.
* Ist es schon offen, so wird es nach vorne gebracht. Diese Aktion
* ist vor allen Dingen sinnvoll, wenn ein Accessory ein TOS-Programm
* mittels der system()-Funktion starten will (Warnung: Auf keinen
* Fall darf ein GEM-Programm von einem Accessory via system()
* gestartet werden! (siehe auch AV_STARTPROG)
* Auch sollte diese Nachricht nur auf ausdrücklichen Wunsch des
* Benutzers gebraucht werden, da es ihn sonst nur verwirren kann.
*
* ACHTUNG: Diese Nachricht steht nur in Gemini.app zur Verfügung.
*/
#define AV_OPENCONSOLE 0x4718
/* VA_CONSOLEOPEN: Gibt zurück, ob das Console-Fenster nach vorne
* gebracht worden ist. Word 3 == 0 (nein) != 0 (ja)
*/
#define VA_CONSOLEOPEN 0x4719
/* AV_OPENWIND: Venus soll ein Datei-Fenster öffnen.
* Dies sollte auch nur geschehen, wenn die Ursache für den
* Benutzer ersichtlich ist.
* Word 3+4 (Pointer) Pfad für das Fenster (s.o.).
* Word 5+6 (Pointer) Wildcard für darzustellende Dateien.
*/
#define AV_OPENWIND 0x4720
/* VA_WINDOPEN: Gibt an, ob das Fenster geöffnet werden konnte.
* siehe VA_CONSOLEOPEN
*/
#define VA_WINDOPEN 0x4721
/* AV_STARTPROG: Venus soll ein Programm starten. Hierbei
* werden die angemeldeten Applikationen der Venus mit
* berücksichtigt. Man kann also auch eine Datei angeben, für
* die Venus dann ein Programm sucht.
* Word 3+4 (Pointer) Programmname mit kompletten Pfad
* Word 5+6 (Pointer) Kommandozeile (kann NULL sein)
*/
#define AV_STARTPROG 0x4722
/* VA_PROGSTART: Gibt an, ob Venus das Programm startet.
* Word 3 == 0: nicht gestartet, != 0 gestartet
* Im Allgemeinen wird das Acc. im Fehlerfall sofort eine
* Nachricht bekommen. Wenn das Programm aber gestartet wird, erhält
* das Acc. diese Nachricht erst nach dem Start des Programms, da
* die Routine, die den Pexec macht nicht mehr wissen kann, das ein
* Acc. noch schnell eine Nachricht bekommen muß. Bei einem GEM-
* Programm, kann man der Erfolg auch an dem AC_CLOSE erkennen.
* Auch ist die Fehlererkennung nicht optimal. Der Rückgabewert weist
* auch nicht aus, das das Programm fehlerfrei gelaufen ist.
*/
#define VA_PROGSTART 0x4723
/* AV_ACCWINDOPEN: Mit dieser Nachricht kann ein Acc Venus mitteilen, daß
* es ein Fenster geöffnet hat.
* Word 3 AES-Handle des geöffneten Fensters
*/
#define AV_ACCWINDOPEN 0x4724
/* VA_DRAGACCWIND: Venus teilt dem Acc mit, daß Objekte auf eines seiner
* mittels AV_ACCWINDOPEN angemeldeten Fenster gezogen worden sind.
* Word 3 AES-Handle des Fensters
* Word 4 X-Position der Maus
* Word 5 Y-Position der Maus
* Word 6+7 Pointer auf einen String, der die Namen der Objekte enthält.
*/
#define VA_DRAGACCWIND 0x4725
/* AV_ACCWINDCLOSED: Acc teilt Venus mit, daß sein Fenster geschlossen
* wurde. Dies braucht das Acc nur in dem Fall zu tun, wenn es selbst das
* Fenster schließt. Bekommt es eine AC_CLOSE Mitteilung vom AES, so weiß
* Venus schon, daß alle Fenster weg sind.
* Word 3 AES-Handle des Fensters
*/
#define AV_ACCWINDCLOSED 0x4726
/* AV_COPY_DRAGGED: Acc teilt Venus mit, das die vorher mittels
* VA_DRAGACCWIND gedraggten Icons nach Zielpfad kopiert werden
* sollen.
* Word 3 Tastaturstatus wie von evnt_multi() erhalten.
* Word 4+5 Pointer auf String mit Zielpfad
*/
#define AV_COPY_DRAGGED 0x4728
/* VA_COPY_COMPLETE: Venus teilt dem Accessorie mit, das der
* Kopiervorgang, der mit AV_COPY gestartet wurde, beendigt ist.
* Word 3 0, wenn nichts kopiert wurde
ungleich 0, wenn etwas kopiert wurde
*/
#define VA_COPY_COMPLETE 0x4729
#endif